﻿using PFC.CustomControls;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace PFC.Program.Profile.Pages
{
    /// <summary>
    /// Логика взаимодействия для ExpensePage.xaml
    /// </summary>
    public partial class ExpensePage : Page
    {
        public int[] arrayCategoryIDs;

        public ExpensePage()
        {
            InitializeComponent();

            // Передача кол-ва категорий
            SqlDataReader readerCountCtg = ClassRequests.GetCountCategories();
            while (readerCountCtg.Read()) { arrayCategoryIDs = new int[Convert.ToInt32(readerCountCtg["amount"])]; }
            readerCountCtg.Close();
            CommonClass.GetConnection().Close();

            // Передача ID значений категорий в массив
            SqlDataReader readerIDCtg = ClassRequests.GetCategoriesID();
            int i = 0; // итерация
            while (readerIDCtg.Read()) { arrayCategoryIDs[i] = Convert.ToInt32(readerIDCtg["catTx_id"]); i++; }
            readerIDCtg.Close();
            CommonClass.GetConnection().Close();

            // Передача значений в comboBox 
            SqlDataReader readerInformation = ClassRequests.GetInfo_FromCategoryTx();

            // Создание списка категорий
            List<string> categories = new List<string>();

            while (readerInformation.Read())
                categories.Add(readerInformation["name"].ToString());

            readerInformation.Close();
            CommonClass.GetConnection().Close();

            // Передача сформированного списка в ComboBox
            category_Cbx.ItemsSource = categories;
            
        }
        
        /* Возрврат на предыдущую страницу */
        private void back_Btn_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.GoBack();
        }

        /* Потратить баланс */
        private void createTransaction_Btn_Click(object sender, RoutedEventArgs e)
        {
            
            if (category_Cbx.SelectedIndex != -1 & sum_Txb.Text != "")
            {
                int sum = Convert.ToInt32(sum_Txb.Text) * -1;               // Сумма
                var date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");    // Дата

                // Вставка данных о расходе
                ClassRequests.InsertData_Tx(GlobalVaribles.selectWallet, arrayCategoryIDs[category_Cbx.SelectedIndex], sum, desc_Txb.Text, date);
                
                // Изменение глоб. перменной баланса текущего пользователя
                GlobalVaribles.balanceCurrentUser += sum;
                
                // Измененине баланса текущего пользователя в БД
                ClassRequests.UpdateBalance(GlobalVaribles.selectWallet, GlobalVaribles.balanceCurrentUser);
                NavigationService.Navigate(new Main());
            }

            else MessageBox.Show("Присутствуют пустые поля!", "Ошибка при пополнении",
                                  MessageBoxButton.OK, MessageBoxImage.Error);
            
        }

        /* Обработчик на запрет ввода букв в поле суммы */
        private void sum_Txb_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
        }

        // Переход на страницу добавления категорий
        private void AddNewCategory_Click(object sender, RoutedEventArgs e)
        {
            var ClickedButton = e.OriginalSource as NavButton;
            NavigationService.Navigate(ClickedButton.NavUri);
        }
    }
}
